var Audditio = { admin_ajax: function( action, data, callback ){ this.ajax ( ajaxurl, action, data, callback ); }, front_ajax: function( action, data, callback ){ this.ajax ( audAjax.ajaxurl, action, data, callback ); }, ajax: function( url, action, data, callback ){ jQuery.post( url, { action : 'audAjax', audAction : action, data : JSON.stringify(data) }, function(res){ console.log(res); callback(eval('(' +res+ ')')); } ); }, upload_file: function( file, callback) { formdata = false; if (window.FormData) { formdata = new FormData(); } //alert(file.type); formdata.append("action", 'audAjax'); formdata.append("audAction", 'aud_upload_file'); formdata.append("aud_file", file); if (formdata) { jQuery.ajax({ url: audAjax.ajaxurl, type: "POST", data: formdata, processData: false, contentType: false, success: function(res) { callback(eval('(' + res + ')')); } }); } }, input : { is_editor_active : function( editor_id ){ if(typeof tinyMCE == 'undefined'){ return false; } if( typeof editor_id == 'undefined' ){ editor = tinyMCE.activeEditor; }else{ editor = tinyMCE.EditorManager.get(editor_id); } if(editor == null){ return false; } return !editor.isHidden(); }, get_wp_editor_data: function ( data ){ jQuery( '.aud_editor' ).each(function(){ var id = jQuery(this).attr( 'id' ); if(Audditio.input.is_editor_active( id ) ){ val = tinymce.get( id ).getContent( { format: 'html' } ); }else{ val =jQuery( '#'+id ).val(); } data[id] = val; }); return data; }, serializeToObject: function( serialize ){ //console.log(serialize); var fields = serialize.split("&"), object = {}; for( var i in fields ){ var field = fields[i].split("="), field_name = field[0].replace("%5B%5D",""), field_value = decodeURIComponent( field[1].replace(/\+/g, " ") ); if ( ! object[field_name] ){ if( field[0].indexOf( "%5B%5D") == -1 ){ object[field_name] = field_value; }else{ object[field_name] = [field_value]; } }else{ if ( object[field_name].constructor === Array ){ object[field_name].push( field_value ) }else{ object[field_name] = [object[field_name], field_value ]; } } //alert(decodeURIComponent(field[0])); } return Audditio.input.get_wp_editor_data( object ); } }, msg: { success: function( messageText ){ this.showMessage( 'aud_success', messageText ); }, error: function( messageText ){ this.showMessage( 'aud_error', messageText ); }, warning: function( messageText ){ this.showMessage( 'aud_warning', messageText ); }, showMessage :function( type, messageText ){ var msgBox = jQuery('
').text( messageText ); jQuery('body').append( msgBox ); width = msgBox.outerWidth(); height = msgBox.outerHeight(); marginLeft = width/2; marginTop = height/2; msgBox.css({marginLeft: -marginLeft, marginTop: -marginTop}); msgBox.fadeIn('slow'); setTimeout(function(){ msgBox.fadeOut(function(){ msgBox.remove(); }); },2000); } }, data:{ repeater_fields: [] }, repeater_sortable: function(){ jQuery('.repeater_wrap').sortable({ update: function (event, ui) { var id = jQuery(ui.item).parent().parent().attr('id'); Audditio.fixRepeaterSerial( id ); } }); }, make_sortable: function( target ){ jQuery('.uploaded_image_wrap ul').sortable({ //containment: "parent" , update: function (event, ui) { console.log( jQuery(this).sortable('serialize') ); var data = Audditio.input.serializeToObject( jQuery(this).sortable('serialize') ), target = jQuery(this).attr('data-target'); jQuery('#'+target).val( data[target+'[]'].join(",") ); } }); }, fixRepeaterSerial: function( id ){ jQuery( '#'+id ).find( '.repeater_row_wrap' ).each(function(){ var index = jQuery(this).index(); jQuery(this).find('.repeater_head').find('.serial').html( ( index + 1 ) + '.' ); }); }, show_hide_child_fields:function(){ jQuery('.child_field').each(function(){ var parent = jQuery(this).attr('data-parent'), parent_val = jQuery(this).attr('data-parent-val'), val = Audditio.fn.get_field_val( '#'+parent ); if( val == parent_val ){ jQuery(this).fadeIn('fast'); }else{ jQuery(this).hide(); } jQuery(document).on( 'change', '#'+parent, function(){ var val = Audditio.fn.get_field_val( this ); id = jQuery(this).attr('id'); jQuery('[data-parent='+id+']').each(function(){ var parent_val = jQuery(this).attr('data-parent-val'); if( val == parent_val ){ jQuery(this).fadeIn('fast'); }else{ jQuery(this).hide(); } }); }); }); }, fn: { is_file: function( url ){ var ext = url.split('.').pop(); console.log(ext); var types = [ 'jpg', 'png', 'gif', 'jpeg', 'pdf' ]; if( types.indexOf( ext ) == -1 ) return false; return true; }, get_field_val:function( field ){ var type = jQuery(field).attr( 'type'); if( type == 'checkbox' ){ val = ( jQuery(field).is(':checked') ) ? 1 : 0; }else{ val = jQuery(field).val(); } return val; } }, form : { data: { parent_wrap:false, file_types: { 'image' : [ 'jpg', 'jpeg', 'png', 'bmp' ], 'document' : [ 'pdf', 'doc', 'docx', 'txt' ] } }, trim: function(s){ return s.replace(/^\s+|\s+$/, ''); }, validateImage: function(field, msg) { var error = "", fld = document.getElementById(field), fileExtension = ['jpeg', 'jpg', 'png', 'gif', 'bmp']; if (jQuery.inArray(fld.value.split('.').pop().toLowerCase(), fileExtension) == -1) { error = msg; this.display_msg(field, msg); } else { this.clr_msg(field, msg); } return error; }, validateEmpty: function (field,msg) { var error = "", fld=document.getElementById(field); if (fld.value.length == 0 ) { error = msg; this.display_msg(field,msg); } else { this.clr_msg(field,msg); } return error; }, validatePhone: function (field,msg) { var error = "", fld=document.getElementById(field), matcher= /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/; if(!fld.value.match(matcher)) { error = msg; this.display_msg(field,msg); } else { this.clr_msg(field,msg); } return error; }, validateEmail: function (field,msg) { var error="", fld = document.getElementById(field), tfld = this.trim(fld.value), emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ , illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ; if (!emailFilter.test(tfld)) { //test email for illegal characters error = msg; this.display_msg(field,error); } else if (fld.value.match(illegalChars)) { error = msg; this.display_msg(field,error); } else{ this.clr_msg(field,msg); } return error; }, validate_num: function ( field, msg ) { var error = "", fld=document.getElementById(field), stripped = fld.value.replace(/[\(\)\.\-\ ]/g, ''); if (isNaN(parseInt(stripped))){ error = msg; this.display_msg(field,error); }else { this.clr_msg(field,msg); } return error; }, con_pass_check: function ( field, field1, msg){ var error = "", fld=document.getElementById(field), fld1=document.getElementById(field1); if (fld.value.length==0 || fld1.value.length==0 || fld.value!=fld1.value ) { error = msg; this.display_msg(field,error); }else { this.clr_msg(field,msg); } return error; }, validate_fixedLength: function (field, len, msg) { var error = ""; var fld=document.getElementById(field); var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, ''); var len1=parseInt(len); if (!(stripped.length == len1)) { error = msg; this.display_msg(field,error); }else { this.clr_msg(field,msg); } return error; }, is_checked: function(field,msg){ var error = ""; if(!jQuery('#'+field).is(":checked")){ error = msg; this.display_msg(field,error); }else { this.clr_msg(field,msg); } return error; }, is_valid_file: function ( file_name, type ){ var name_array = file_name.split("."), ext = name_array[1]; if( ext ){ if( this.data.file_types[ type ].indexOf( ext ) !== -1 ){ return true; } } return false; }, display_msg: function ( field, msg ){ var divname = field+"_error"; if(Audditio.form.data.parent_wrap){ jQuery('#'+field).parent().addClass('error'); } jQuery('#'+field).addClass('error-input'); if( jQuery("#" + divname).length == 0 ){ jQuery('#'+field).after( '
' + msg + '
' ); }else{ jQuery("#" + divname).text( msg ); } return msg; }, clr_msg: function ( field, msg ){ var divname = field+"_error", div_text = jQuery('#'+divname).html(); if( msg == div_text ){ jQuery('#'+divname).remove(); if(Audditio.form.data.parent_wrap){ jQuery('#'+field).parent().removeClass('error'); } jQuery('#'+field).removeClass('error-input'); } return ''; } } };